package algo3.tp1.ejercicios;


public class Ejercicio1 {
	protected long acumulator = 0;
	
	public int resolver(int[] v1,int[] v2){
		acumulator = 0;
		return encontrarMesetaMaxima(combinarArreglos(v1, v2));
	}

	private int[] combinarArreglos(int[] v1, int[] v2) {
		int i = 0, j = 0; 
		
		int[] v = new int[v1.length+v2.length];
		int vi = 0;
		
		while(i < v1.length || j < v2.length){
			acumulator++;
	
			if(i == v1.length){
				v[vi] = v2[j];
				j++;
			}else if(j == v2.length){
				v[vi] = v1[i];
				i++;
			}else if(v1[i] < v2[j]){
				v[vi] = v1[i];
				i++;
			}else{
				v[vi] = v2[j];
				j++;
			}
			vi++;
		}
		return v;
	}

	private int encontrarMesetaMaxima(int[] v) {
		int actual = v[0], maximo = 0, cantidad = 0;
		for(Integer elemento : v){ 
			acumulator++;
			if(elemento == actual){
				cantidad++; 
			}else{
				maximo = Math.max(maximo,cantidad);
				cantidad = 1; actual = elemento;
			}
		}
		
		maximo = Math.max(maximo,cantidad);
		acumulator++;
		
		return maximo;
	}
}